iT邦幫忙

2024 iThome 鐵人賽

DAY 17
1

前言

經過這幾天的努力,我們的 RAG 問答系統已經快要完成啦!
目前我們能透過使用者的問題進行資料的檢索,並且檢索的結果是符合我們的預期的。那麼接下來,我們就要將這些資料提供給 LLM 進行參考後生成回覆,我們就快開始吧~

LLM 的設置

首先,我們要先設置欲使用的 LLM,這裡我推薦各位一個好用的平台 Ollama

什麼是 Ollama?

image

Ollama 不僅是一隻可愛的羊駝,它還是一個專門設計用來運行 LLM 的本地端環境或服務平台。它允許我們在本地機器上部署和運行不同的 LLM,而不需要依賴於雲端服務。Ollama 能夠提供一個靈活且高效的框架來運行 LLM,並且允許用戶自定義模型的參數。我自己在實際使用時,不僅能夠感覺它的速度快,在第一次操作時也比較容易使用。

在大概了解 Ollama 後,我們就來進行 LLM 的實例化吧~

llm = ChatOllama(
    model="gemma2",
    base_url="http://127.0.0.1:11434",
    temperature=0
)

這裡我們透過 ChatOllama 來對接 Ollama 的服務端,而在上面這段程式碼中,設置了一些參數:

  • model:表示選擇了 gemma2 作為我們的模型,負責生成文字回應。
  • base_url:這個是當前模型運行的本地伺服器地址。這代表 Ollama 正在本地運行並接受 API 請求。
  • temperature:是設定生成文本的「溫度」參數,溫度控制模型生成文本的隨機性。當溫度設為 0 表示生成的回覆將會更加穩固,隨機性會比較低,適合需要嚴謹回答的情境。

在我們設置好 LLM 後,接著,我們還要準備一個提示,用來告訴 LLM 如何處理使用者的問題,我們稱之為 Prompt。

Prompt 的介紹與設置

什麼是 Prompt?

Prompt 是用來向 LLM 提供輸入訊息的一種格式化方式。Prompt 的目的是提供一個明確的指示,告訴模型如何處理使用者的問題,以及如何結合檢索到的參考資料來生成答案。千萬不要小看 Prompt 的威力!不同的 Prompt 會影響 LLM 的回覆,我也花了好多的時間在調整 Prompt 呢~

現在我們來設置我們的 Prompt 吧:

PROMPT = """你是一位負責處理使用者問題的助手,你必須詳讀參考資料中的不同段落的資訊來回答使用者問題,不要回答沒有在參考資料中的資訊。

若沒有辦法從以下參考資料中取得資訊或參考資料為空白,則回答"沒有相關資料",且不須回覆 theme。

若有辦法從以下參考資料中取得資訊,請在回答的最後加入 theme。

注意:輸出必須使用繁體中文。"""

這個 Prompt 就是我們要提示給 LLM,讓 LLM 依照這個提示來處理使用者的問題。
現在我們設置完 Prompt 後,我們今天的工作就差不多完成啦~
明天我們就要來介紹最後一個重要的工具 → LangChain

參考文獻:
https://ollama.com/blog/embedding-models


上一篇
第十六篇:檢索的方法與效果
下一篇
第十八篇:LangChain 的使用與 RAG 的結果
系列文
成為 Kubernetes 特級咒術師的 30 天修行30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言